package main

import "fmt"
import "strings"

func main() {
	// Go语言中字符串是用双引号包裹的
	// Go语言中单引号包裹的是字符
	// s := "Hello 沙河" // 字符串
	// 单独的字母、汉字、符号表示一个字符 以上是字符串
	// c1 := 'h' // 字符
	// 字节： 1字节 = 8Bit(8个二进制位)	// 八个比特  八个二进制位  0101
	// 一个字符 'A' = 1个字节
	// 一个utf-8 编码的 '沙' = 一般占3个字节  // Unicode编码一般占两个字节

	// 字符串转义符
	//   \r  回车符（返回行首）	\n  换行符（直接跳到下一行的同列位置）	\t  制表符（相当于按一个tab键）	\'  单引号  \"  双引号 	\\反斜杠
	// \ 本来是具有特殊含义的，我应该告诉程序我写的\就是一个单纯的\
	path := "\"F:\\Go\\src\\code.oldbodyedu.com\\studygo\\day01\\07fmt\""
	fmt.Printf("%#v", path)
	fmt.Printf("%s", path)
	s := "I'm ok"
	fmt.Println(s)
	// 多行字符串
	s2 := `
		世情薄
		人情恶
		雨送黄昏花易落
	`
	fmt.Println(s2)
	s3 := `F:\Go\src\code.oldbodyedu.com\studygo\day01`
	fmt.Println(s3)

	// 字符串常用相关操作
	fmt.Println(len(s3))

	// 字符串拼接
	name := "理想"
	world := "dsb"
	ss := name + world
	fmt.Println(name + world)
	fmt.Println(ss)
	ss1 := fmt.Sprintf("%s%s", name, world)

	fmt.Printf("%s%s\n", name, world)
	fmt.Println(ss1)
	// 👆  一个是打印到终端  一个是返回给变量

	// 分割
	ret := strings.Split(s3, "\\")
	fmt.Println(ret)
	// 包含
	fmt.Println(strings.Contains(ss, "理性"))
	fmt.Println(strings.Contains(ss, "理想"))
	// 前缀后缀判断
	// 前缀	以什么开头
	fmt.Println(strings.HasPrefix(ss, "理想"))
	// 后缀 以什么结尾
	fmt.Println(strings.HasSuffix(ss, "理想"))
	// 判断字串出现的位置
	s4 := "abcdeb"
	fmt.Println(strings.Index(s4, "c"))     // 第一次出现的位置
	fmt.Println(strings.LastIndex(s4, "b")) // 最后一次出现的位置
	// 拼接	// ret
	fmt.Println(strings.Join(ret, "+"))

	
}
